home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntlib25 / exec.c < prev    next >
C/C++ Source or Header  |  1992-09-05  |  2KB  |  98 lines

  1. /*
  2.     execxxx stuff for MiNT/TOS; written by Eric R. Smith, and
  3.     placed in the public domain
  4. */
  5.  
  6. #include <stdarg.h>
  7. #include <process.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <errno.h>
  11. #include <unistd.h>
  12.  
  13. extern char **environ;
  14.  
  15. int
  16. execve(path, argv, envp)
  17.     char    *path;
  18.     char    **argv;
  19.     char    **envp;
  20. {
  21.     return _spawnve(P_OVERLAY, path, argv, envp);
  22. }
  23.  
  24. int
  25. execv(path, argv)
  26.     char *path;
  27.     char **argv;
  28. {
  29.     return _spawnve(P_OVERLAY, path, argv, environ);
  30. }
  31.  
  32. #ifdef __STDC__
  33. int execle(char *path, ...)
  34. #else
  35. int execle(path)
  36.     char    *path;
  37. #endif
  38. {
  39.     va_list args;
  40.     char    ***envp;
  41.  
  42.     va_start(args, path);
  43.  
  44.     for (envp = (char ***) args ; *envp ; envp++)
  45.         ;
  46.     return _spawnve(P_OVERLAY, path, (char **)args, *(envp+1));
  47. }
  48.  
  49. #ifdef __STDC__
  50. int execl(char *path, ...)
  51. #else
  52. int execl(path)
  53.     char    *path;
  54. #endif
  55. {
  56.     va_list args;
  57.  
  58.     va_start(args, path);
  59.     return _spawnve(P_OVERLAY, path, (char **)args, environ);
  60. }
  61.  
  62. /* execvp, execlp: try to execute a program on the default system
  63.    execution path. WARNING: the current directory is always searched
  64.    first.
  65. */
  66.  
  67. __EXTERN char *findfile __PROTO((char *fname, char *fpath, char **fext));
  68.  
  69. static char *extensions[] = { "ttp", "prg", "tos", NULL };
  70.  
  71. int
  72. execvp(name, argv)
  73.     char *name;
  74.     char **argv;
  75. {
  76.     char *execname;
  77.  
  78.     execname = findfile(name, getenv("PATH"), extensions);
  79.     if (!execname) {
  80.         errno = ENOENT;
  81.         return -1;        /* file not found */
  82.     }
  83.     return _spawnve(P_OVERLAY, execname, argv, (char **)NULL);
  84. }
  85.  
  86. #ifdef __STDC__
  87. int execlp(char *name, ...)
  88. #else
  89. int execlp(name)
  90.     char    *name;
  91. #endif
  92. {
  93.     va_list args;
  94.  
  95.     va_start(args, name);
  96.     return execvp(name, (char **)args);
  97. }
  98.